package leetcode.N501_N600;

/**
 * @author 歪大哥😁
 * @date 2020-01-28.
 * https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/
 * 反转字符串中的3
 *
 *
 * 给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
 *
 * 示例 1:
 *
 * 输入: "Let's take LeetCode contest"
 * 输出: "s'teL ekat edoCteeL tsetnoc" 
 * 注意：在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。
 *
 */
public class N557 {

    public static void main(String[] args) {
        String s = "Let's take LeetCode contest";
        System.out.println(reverseWords(s));

    }

    static String reverseWords(String s) {
        String[] sa = s.split(" ");
        StringBuilder sb = new StringBuilder();
        for (String s1 : sa) {
            reverseAndAppendString(s1.toCharArray(), sb);
            sb.append(" ");
        }
        sb.setLength(sb.length() - 1);
        return sb.toString();
    }

    static void reverseAndAppendString(char[] s, StringBuilder sb) {
        for (int i = s.length - 1; i >= 0;) {
            sb.append(s[i--]);
        }
    }
}
